Octorber 5 th Dynamic array Practice
void _dynArraySetCapacity(struct dynArr *v, int newCapacity) {
if(newCapacity < v->size){
v->size = newCapacity;
}
TYPE *newArray = (TYPE *)malloc(sizeof(TYPE) * newCapacity);
for(int i = 0;i<v->size;++i){
newArray[i]= v->data[i];
}
free(v->data);
v->data = newArray;
v->capacity = newCapacity;
}
void _dynArraySetCapacity(struct dynArr *v, int newCapacity) {
assert(newCapacity > 0);
if (newCapacity < v->size) {
v->size = newCapacity; /* 截断已有元素,防止越界 */
}
TYPE *newData = (TYPE *) malloc(sizeof(TYPE) * newCapacity);
assert(newData != 0);
for (int i = 0; i < v->size; ++i) {
newData[i] = v->data[i];
}
free(v->data);
v->data = newData;
v->capacity = newCapacity;
}malloc(sizeof(TYPE)*newCapacity) free(v->data); int i = 0 ; i < v->size not i < newCapacity assert(newCapacity > 0); we just need to assign a new array, and change the pointer of the dynamic array to new array, no need to assign a new dynamic array